import axios from "axios";
import store from "@/store";
import router from "@/router";
import { Promise } from "core-js";
import { Message } from "element-ui";
// import { getTimeKey } from "@/utils/auth";

// 设置一个时间变量,定义token的存储时间值
// const Timeout = 5400;
// 创建一个axios的实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // 设置axios请求的基础地址
  timeout: 10000 // 定义响应时长
});
// 请求拦截器
service.interceptors.request.use(
  config => {
    // confid 请求的配置信息
    // 发起请求，统一加入token
    if (store.getters.token) {
      // // 判断时间戳的时效性
      // if (isTime()) {
      //   // 如果为true，说明token失效了
      //   console.log(3333);
      //   store.dispatch("user/logout"); // 调用退出功能
      //   // 跳转到登录页面
      //   router.push("/login");
      //   // return 一个错误信息
      //   return Promise.reject(new Error("登录超时！"));
      // }
      // 设置token
      config.headers["Authorization"] = `Bearer ${store.getters.token}`;
    }
    return config; // 必须返回配置
  },
  error => {
    //  Promise.reject返回一个被拒绝的Promise对象
    return Promise.reject(error);
  }
);
// 响应拦截器
service.interceptors.response.use(
  response => {
    // axios 默认外面加了一层data
    // console.log(6);
    const { success, message, data } = response.data;
    // 根据success的状态判断是否执行成功
    // console.log(1,data);
    if (success) {
      return data;
    } else {
      //   导入element中的方法，提示错误信息
      Message.error(message);
      return Promise.reject(new Error("response", message));
    }
  },
  error => {
    // 判断 response 里面的响应对象
    if (error.response && error.response.data && error.response.data.code === 10002) {
      // 调用退出功能
      store.dispatch('user/logout')
      // 跳转到登录页面
      router.push('/login')
      // 提示用户，token失效
      return Promise.reject(new Error('登录超时！'))
    } else {
      Message.error(error.message); // 提示错误信息
    }
    //   返回执行错误信息，让当前的执行跳出，进入catch
    return Promise.reject(error);
  }
);
// function isTime() {
//   const newTime = Date.now(); // 当前时间戳
//   const oldTime = getTimeKey(); // 存入的时间戳
//   return (newTime - oldTime) / 1000 > Timeout;
// }
export default service; // 默认导出axios实例
